# 第六堂课 加载地图
import pygame
import sys


class 地图(pygame.sprite.Sprite):

    def __init__(self, 地图坐标x, 地图坐标y):
        self.x = 地图坐标x
        self.y = 地图坐标y
        self.地图图片 = pygame.image.load("image/bg1.png")

    def 地图移动(self):
        if self.x <= -1000:
            self.x = 1000
        else:
            self.x -= 5

    def 地图更新(self):
        screen.blit(self.地图图片, (self.x, self.y))


pygame.init()
screen = pygame.display.set_mode((640, 480))
pygame.display.set_caption("Eason快跑")
image = pygame.image.load("image/eason.png")
background = pygame.image.load("image/bg_sky.png")
axis_x = 320
axis_y = 400
frame_number = 4  # 帧数
image_number = 0  # 图片的计数变量
fcc_clock = pygame.time.Clock()  # 获取pygame的时钟
frame_rect = image.get_rect()  # 获取全图的矩形数据，以此计算单帧图形
frame_rect.width /= frame_number  # 获取每一帧的边框宽度数据，实例图片之只有一行，所以单帧高度和整体图片高度相等
fps = 30  # 设置刷新率，数字越大刷新率越高，但因为示例图片只有6帧所以建议设低一点 否则闪的太凶。

# 创建地图对象
bg1 = 地图(0, 0)
bg2 = 地图(1024, 0)

while True:
    for event in pygame.event.get():
        if event.type == pygame.QUIT:
            sys.exit()
        if event.type == pygame.KEYDOWN:
            if event.key == pygame.K_LEFT:
                axis_x -= 10
            elif event.key == pygame.K_RIGHT:
                axis_x += 10
            elif event.key == pygame.K_UP:
                axis_y -= 10
            elif event.key == pygame.K_DOWN:
                axis_y += 10
    if image_number < frame_number:  # 如果图片计数变量小于帧数
        frame_rect.x = frame_rect.width * image_number  # 单个图片的坐标等于单个图片宽度乘以图片计数变量
        image_number += 1  # 图片计数变量加1
    else:
        image_number = 0

    screen.blit(background, (0, 0))  # 绘制一个有太阳的背景图片，或者绘制白色图片，否则滚动地图有虚影，而且这条要在bg1和bg2之前运行，否则会被覆盖
    bg1.地图更新()  # 更新地图
    bg2.地图更新()
    bg1.地图移动()  # 滚动地图
    bg2.地图移动()

    screen.blit(image, (axis_x, axis_y), frame_rect)
    fcc_clock.tick(fps)
    pygame.display.flip()
